import Vue from 'vue'
import Vuex  from 'vuex'
import {shop_favlist,shop_fav,shop_unfav,shopcart_list,shopcart_clear,shopcart_add,shopcart_sub,address_list,} from '../../utils/api'
//导入日志插件   在vuex的js文件中使用
import createLogger from 'vuex/dist/logger'
//导入持久化插件
import createPersistedState from "vuex-persistedstate";
Vue.use(Vuex)


// vuex的特点
/*
1：集中管理应用程序的状态
2：实现多组件通信
3：vuex是独立于任何组件存在的
4：vuex中的数据 刷新会丢失


*/ 
export default new Vuex.Store({
  state: {
    collectlist:[],
    shopcartlist:[],
    addressslist:[],
  
  },
  getters: {
  },
  mutations: {
      collect(state,payload){
         state.collectlist.push(payload)
         console.log(state.collectlist)
      },
      cancel_collect(state,payload){
          var index = state.collectlist.findIndex((item)=>{
            return item.mtWmPoiId == payload.mtWmPoiId;
          })
          if(index != -1){
            state.collectlist.splice
            (index,1)
          }
      },
      save_favlist(state,payload){
          state.collectlist = payload;
      },
      save_shopcartlist(state,payload){
          state.shopcartlist = payload
      },
      clear_shopcartlist(state){
         state.shopcartlist = []
      },
      add_shopcart(state,payload){
        // console.log("state.shopcartlist",state.shopcartlist)
        // console.log("payload.id",payload.id)
        var index = state.shopcartlist.findIndex((item)=>{
          console.log(state.shopcartlist)
          return item.id == payload.id;
        })
        if(index != -1){
            //  index++
            state.shopcartlist[index].count++
        }else{
          // 深拷贝商品对象 
          var good =  JSON.parse(JSON.stringify(payload))
          good.count = 1
          state.shopcartlist.push(good)
        }


      },
      sub_shopcart(state,payload){
        var index = state.shopcartlist.findIndex((item)=>{
          console.log(state.shopcartlist)
          return item.id == payload.id;
        })
        if(index != -1){
            //  index++
            if(state.shopcartlist[index].count>0){
              state.shopcartlist[index].count--
              if(state.shopcartlist[index].count==0){
                state.shopcartlist.splice(index,1)
              }
            }
           
            
        }


      },
      addlist(state,payload){
        state.addressslist =  payload
        // state.addressslist.push(payload)
        // console.log(  state.addressslist )
      }



  },
  actions: {
  // 之前用户登录后有的收藏列表
       request_favlist(store){
        // 要传入userid 就需要拿到登录时得到的本地存储中的 id   数据里的id
        var userid = JSON.parse( localStorage.getItem('userinfo')).id;
      //  获取当前用户的收藏列表
        shop_favlist({userid}).then((res)=>{
              console.log(res.data)
              store.commit('save_favlist',res.data.list)
        })
       },

// 点击收藏按钮后 ，发生请求使vuex中的数据和本地服务器中的数据保持一致

// payload用来接收点击时传过来的店铺 
       request_fav(store,payload){
        var userid = JSON.parse( localStorage.getItem('userinfo')).id;
            // shopid不知道，所以在调用这个方法的同时把shopid当作参数传进来
        // 第一个参数是本地存储中的id 第二个参数是得到店铺列表中的店铺id 
        shop_fav({userid,shopid:payload.mtWmPoiId}).
        // 发请求 收藏
        then((res)=>{
          if(res.data.code == 200){
              // 如果请求成功 调用同步方法collect,将得到的列表以第二个参数传进去 收藏到vuex中
              
              store.commit('collect',payload)
          }

        })



       },
      
// 取消收藏按钮
       request_unfav(store,payload){
        var userid = JSON.parse( localStorage.getItem('userinfo')).id;
        shop_unfav({userid,shopid:payload.mtWmPoiId}).
        // 发请求 取消收藏
        then((res)=>{
          if(res.data.code == 200){
              // 如果请求成功 调用同步方法cancel_collect,将得到的列表以第二个参数传进去 取消收藏到vuex中
              
              store.commit('cancel_collect',payload)
          }

        })

       },

// 请求购物车列表中的数据
       request_shopcartlist(store){
        var userid = JSON.parse( localStorage.getItem('userinfo')).id;
        shopcart_list({userid}).then((res)=>{
          // console.log()
          if(res.data.code == 200){
            // console.log(res.date.list)
             store.commit('save_shopcartlist',res.data.list)
        

        }
        })
       },

// 清空购物车列表
       request_clearshopcartlist(store){
        var userid = JSON.parse( localStorage.getItem('userinfo')).id;
        shopcart_clear({userid}).then((res)=>{
          // console.log()
          if(res.data.code == 200){
            // console.log(res.date.list)
             store.commit('clear_shopcartlist',res.data.list)
        

        }
        })
       },


// 购物车数量加一
        request_shopcartadd(store,payload){
          var userid = JSON.parse( localStorage.getItem('userinfo')).id;
          shopcart_add({userid,goodid:payload.id}).then((res)=>{
                if(res.data.code == 200){
                  store.commit('add_shopcart',payload)
                }    
          })
          
        },
    // 购物车数量减一
    request_shopcartsub(store,payload){
      var userid = JSON.parse( localStorage.getItem('userinfo')).id;
      shopcart_sub({userid,goodid:payload.id}).then((res)=>{
            if(res.data.code == 200){
              store.commit('sub_shopcart',payload)
            }    
      })
      
    },

    request_addresslist(store){
      var userid = JSON.parse( localStorage.getItem('userinfo')).id;
    
      address_list({userid}).then((res)=>{
        // console.log()
        if(res.data.code == 200){
          console.log(res.data.list)
           store.commit('addlist',res.data.list)
          //  ths.phone= res.data.list[0].phone
      

      }
      })

    },
   

  },
  modules: {
  },
  plugins:[createLogger(),createPersistedState()]
})
